# Index investor app

Прежде чем начать запускать проект, необходимо скачать с сайта [Московской биржи данный по индексу](https://www.moex.com/ru/index/IMOEX/constituents) (Архив ребалансеровок). И сохранить в корне проекта под именем `imoex.xlsx`

После чего запустить скрипт: `npm run parse-data`

## Сборка приложения

### Решение проблем

#### too many open files

Если вовремя сборки проекта вы стоклнулсь с сообщением:

```log
RUN npm install
npm ERR! code EMFILE
npm ERR! syscall open
npm ERR! path /root/.npm/_cacache/index-v5/36/0f/69b39f197ca5c129d3d9bc0be9ed31d795864fe145f723527b19414ea87d
npm ERR! errno -24
npm ERR! EMFILE: too many open files, open '/root/.npm/_cacache/index-v5/36/0f/69b39f197ca5c129d3d9bc0be9ed31d795864fe145f723527b19414ea87d'
```

Ошибка, которую вы видите (EMFILE: too many open files), обычно возникает из-за того, что в процессе сборки проекта npm открывает слишком много файлов, что приводит к превышению лимита файлового дескриптора в системе.

##### Решение для MacOS + podman

Запускайте сборку с флагом: `--ulimit='nofile=65535:65535'`. Например:

```sh
podman  build --tag index-investor --ulimit='nofile=65535:65535' .
```

## Внеси свой вклад

Мы предерживаемся [соглашения о разработке](./rfc/rfc-1.md)

### Задачи

- [ ] Переписать метод `IndexInvestor:: getAssets` под использование `Promise.all`
- [ ] Интегрировать React компоненты с классом IndexInvestor
- [ ] Сохранение данных пользователя в localStorage
- [ ] Добавить возможность настройки соотношения акции/обликации
- [ ] После изменения капитала пользователя, обновлять список компаний, которые должны быть в портфеле
- [ ] Добавить дельту между покупкой и нынешним курсом
- [X] Написать тест на класс [IndexInvestor](./src/investor/investor.ts)